#!/bin/sh

set -e
OUT="$1"

find_node() {
    local NODE="${NODE_DIR}/bin/node"
    local CE_NODE="/opt/compiler-explorer/node/bin/node"
    local SYS_NODE="$(which node 2>/dev/null)"
    local SYS_NODEJS="$(which nodejs 2>/dev/null)"

    if test -x "${NODE}" -a -n "${NODE_DIR}"; then
        echo "${NODE}"
    elif test -x "${CE_NODE}"; then
        echo "${CE_NODE}"
    elif test -x "${SYS_NODE}"; then
        echo "${SYS_NODE}"
    elif test -x "${SYS_NODEJS}"; then
        echo "${SYS_NODEJS}"
    else
        >&2 echo "Unable to find a node"
    fi
}

NODE=$(find_node)

NODE_MIN_VERSION=11
NODE_VERSION_USED=12
NODE_VERSION=$(${NODE} --version)
NODE_MAJOR_VERSION=$(echo ${NODE_VERSION} | cut -f1 -d. | sed 's/^v//g')

if test ${NODE_MAJOR_VERSION} -lt ${NODE_MIN_VERSION}; then
    >&2 echo Compiler Explorer is known not to run with versions prior to v${NODE_MIN_VERSION}
    >&2 echo Visit https://nodejs.org/ for installation instructions for newer versions
    >&2 echo To configure where we look for node, set NODE_DIR to its installation base
    exit 1
fi

if test ${NODE_VERSION_USED} -ne ${NODE_MAJOR_VERSION}; then
    >&2 echo Warning: Compiler Explorer is only tested against v${NODE_VERSION_USED}.x, but v${NODE_MAJOR_VERSION} was found.
    >&2 echo Note that you might find issues if you decide to keep this version
    >&2 echo Visit https://nodejs.org/ for installation instructions for the required version
    >&2 echo To configure where we look for node, set NODE_DIR to its installation base
fi

echo ${NODE} > ${OUT}
